CS224N Natural Language Processing with Deep Learning Lecture 10
课程主页:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/
视频地址:https://www.bilibili.com/video/av46216519?from=search&seid=13229282510647565239
这里回顾CS224N Lecture 10的课程内容,这一讲主要介绍了Question answering。
备注:图片均来自课程课件。
Question answering
Question answering类似于阅读理解,给定原文P和问题Q,我们希望给出回答A,模式如下:
Stanford Question Answering Dataset (SQuAD)
SQuAD是问答系统的一个经典数据集:
每个问题有3个答案,下面介绍两种评估结果的方式:
Exact match:如果和3个答案之一相同则为$1$,否则为$0$
$F_1$:把系统和每个答案作为bag of words,计算
注意回答A都是原文P的一段连续的话,所以输出只要指定Start和End即可,SQuAD 2.0是SQuAD数据集的改进,增加了没有回答A的数据。
Stanford Attentive Reader
该模型的整体架构如下:
具体方式为分别对原文P以及问题Q进行编码,然后利用attention计算start以及end,具体如下:
在上图中,首先利用双向LSTM对Q进行编码,最后生成加权和;另一部分,利用Q的词向量和P的词向量做attention,然后进行编码;最后将编码之后的结果利用attention计算start以及end。
Stanford Attentive Reader++
这部分介绍P中单词的特征表示$p_i$,其由如下几点构成:
- 词嵌入(GloVe 300d)
- 语言学特征:POS,NER标签,one-hot的形式
- 单词频率(一元语言模型)
- 完全匹配:单词是否出现在问题中
- 3个二进制特征:精确,无大小写,lemma(不知道具体含义)
- 对齐问题嵌入(“汽车” vs“车辆”)
BiDAF: Bi-Directional Attention Flow for Machine Comprehension
BiDAF的架构如下:
BiDAF体系结构有各种变体和改进,但中心思想是“注意流”层
想法:注意流应该双向传播——从上下文到问题,从问题到上下文
生成相似度矩阵($w$的长度为$6d$):
Context-to-Question (C2Q) attention:
Question-to-Context (Q2C) attention:
对于每个通道位置,BiDAF层的输出为
然后是一个建模层:通道上还有另一个深层(2层)BiLSTM
答案范围的选择更加复杂:
- 开始:将BiDAF和建模层的输出拼接,传递给全连接层,然后传递softmax
- 结束:将建模层M的输出通过另一个BiLSTM生成M2,然后与BiDAF层拼接,然后再次通过全连接层和softmax